Tömb feltöltése véletlen számokkal és az elemek elrendezése beszúró rendezéssel,
eljárások használatával (Beszuro.pas)
program Beszuro;
uses crt;
var i,n:integer;
a:array [1..50] of integer;
procedure kiir;
begin
for i:=1 to n do begin
writeln(a[i]);
end;
end;
procedure cserel(mit,mire:integer);
var x:integer;
begin
x:=a[mit];
a[mit]:=a[mire];
a[mire]:=x;
end;
procedure beszuras(k:integer);
Tömb elemeinek rendezése beszúró rendezéssel, úgy, hogy megvizsgáljuk, hogy az eljárásban az aktuális bemenő elem kisebb e, mint a tömbben az azt megelező elem. Ha igen, akkor az aktuális elemet megcseréljük a másikkal és újra megvizsgáljuk, hogy az őt megelező elem kisebb e nála. Ez a cserélgetés addig megy, amíg az aktuálisan vizsgált elem meg nem találja a helyét, azaz nincs nála kisebb a listában.
begin
while(k>1) do begin
Elértük e már az első tömbelemet a vizsgálódás idején. Ha nem, folytatódik a vizsgálat.
if (a[k]<a[k-1]) then
Megvizsgáljuk, hogy az aktuális tömbelem kisebb e az őt megelőzőnél, ha igen, cserélünk. Ha ez a feltétel nem teljesül, akkor az aktuális tömbelem előtt csak kisebb elemek vannak,így nincs szükség további vizsgálatra, ezért megszakítjuk a ciklust.
cserel (k,k-1)
else break;
dec(k);
Csökkentjük a k értékét 1-el (helyette írhatnák, hogy k:=k-1;)
end;
end;
BEGIN
clrscr;
randomize;
n:=10;
writeln('A tomb elemei rendezes elott:');
for i:=1 to n do begin
a[i]:=trunc(90*random)+1;
writeln(a[i]);
end;
writeln('');
writeln('A tomb elemei rendezes utan:');
i:=2;
while (i<=n) do begin
beszuras(i);
i:=i+1;
end;
kiir;
readkey;
END.
|